<template>
  <div class="bjz-ueditor">
    <bjz-ueditor
      v-model:value="html"
      :config="myConfig"
      @before-init="addCustomButtom"
      :key="1"
      @ready="ready"
      @blur="onBlur"
      v-if="showUeditor"
    ></bjz-ueditor>
    <!-- 插入链接-弹窗 -->
    <h-dialog
      v-model:visible="linkDialog"
      title="插入链接"
      width="420px"
      noline
      modal-body
      dialog-body
      click-modal
    >
      <el-form
        ref="linkForm"
        :model="linkForm"
        :rules="linkRules"
        label-position="left"
        label-width="70px"
        hide-required-asterisk
        @submit.prevent
      >
        <el-form-item prop="name" class="mb20" label="链接文本">
          <el-input
            v-model="linkForm.name"
            placeholder="输入链接文本"
            autocomplete="off"
            maxlength="20"
          />
        </el-form-item>
        <el-form-item prop="link" class="mb20" label="链接地址">
          <el-input
            v-model="linkForm.link"
            placeholder="输入链接地址，以http://、https://开头"
            autocomplete="off"
            maxlength="1000"
          />
        </el-form-item>
        <el-form-item class="from-bottom">
          <el-button
            @click="linkCancelForm(false)"
            style="width: 100px"
            class="withdraw abolish"
            >取消</el-button
          >
          <el-button
            style="width: 100px"
            :loading="load"
            type="primary"
            class="withdraw date-button"
            @click="linkConfirmForm"
            >确认</el-button
          >
        </el-form-item>
      </el-form>
    </h-dialog>
    <!-- 插入图片 -->
    <bjz-oss
      class="imageUpClass"
      style="display: none"
      @uploading="imageBeforeUp"
      @success="imageUpOk"
      @error="imageUpErr"
      :HoverType="true"
    >
      <img
        id="uploadImg"
        ref="uploadImg"
        src="@/assets/upimg.png"
        class="upimg"
      />
    </bjz-oss>
    <!-- 插入视频链接-弹窗 -->
    <h-dialog
      v-model:visible="videoDialog"
      title="插入视频"
      width="600px"
      noline
      modal-body
      dialog-body
      click-modal
    >
      <el-form
        ref="videoForm"
        :model="videoForm"
        :rules="videoRules"
        label-position="left"
        label-width="100px"
        hide-required-asterisk
        @submit.prevent
      >
        <el-form-item prop="link" class="mb20" label="视频通用代码">
          <el-input
            v-model="videoForm.link"
            :row="3"
            type="textarea"
            placeholder="请插入视频通用代码，仅支持腾讯和哔哩哔哩"
            autocomplete="off"
            maxlength="1000"
          />
        </el-form-item>
        <el-form-item class="mb10"> </el-form-item>
        <el-form-item class="from-bottom">
          <el-button
            @click="videoCancelForm"
            style="width: 100px"
            class="withdraw abolish"
            >取消</el-button
          >
          <el-button
            style="width: 100px"
            :loading="load"
            type="primary"
            class="withdraw date-button"
            @click="videoConfirmForm"
            >确认</el-button
          >
        </el-form-item>
      </el-form>
    </h-dialog>
  </div>
</template>

<script>
import { BjzUeditor } from "bjz-ui";
import store from "@/store";
import { copy } from "@/utils/utils";
let that = null;
// 视频通用码验证
const checkVideoUrl = (rule, value, callback) => {
  // 不能为空

  if (value) {
    if (/^<iframe|<video|http:|https:/.test(value)) {
      if (process.env.VUE_APP_ENV != "production") {
        callback();
      } else if (/^<iframe|<video|https:/.test(value)) {
        callback();
      }
    } else callback(new Error("请插入正确的视频通用代码"));
  } else callback(new Error("请插入视频通用代码"));
};
export default {
  name: "BjzEditor",
  components: {
    BjzUeditor,
  },
  props: {
    editorWidth: {
      // 编辑器宽度
      type: [String, Number],
      default: "375",
    },
    editorHeight: {
      // 编辑器输入部分的高度
      type: [String, Number],
      default: "670",
    },

    content: {
      // 编辑器输入的内容
      type: String,
      default: "",
    },
    placeholder: {
      // 编辑器占位的内容
      type: String,
      default: "请输入内容",
    },
    // 模板列表 标题
    tplListTitle: {
      type: String,
      default: "模板列表",
    },
    // 模板列表
    tplList: {
      type: Array,
      default: function () {
        return [];
      },
    },
  },

  data() {
    return {
      html: "",
      h1State: true,
      myConfig: {
        // 编辑器不自动被内容撑高
        autoHeightEnabled: false,
        // 初始容器宽度
        initialFrameWidth: "100%",
        // 初始容器高度
        initialFrameHeight: 200,
        // UEditor 资源文件的存放路径
        UEDITOR_HOME_URL: process.env.VUE_APP_STATIC_URL + "Frontend/Neditor/",
        // 开启从草稿箱恢复功能需要手动设置固定的 editorId，否则组件会默认随机一个，如果页面刷新，下次渲染的时候 editorId 会重新随机，导致无法加载草稿箱数据
        enableAutoSave: true,

        paragraph: { p: "", h1: "", h2: "" },
      },
      // 编辑器实例
      editorInstance: null,

      // 是否显示【插入链接】弹窗
      linkDialog: false,
      // 插入链接弹窗-form表单数据
      linkForm: { name: "", link: "" },
      // 插入链接弹窗-form表单验证规则
      linkRules: {
        name: [
          {
            required: true,
            message: "输入链接文本",
            trigger: "change",
          },
        ],
        link: [
          {
            required: true,
            message: "输入链接地址",
            trigger: "change",
          },
          {
            pattern:
              /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/,
            message: "请输入正确的链接地址",
            trigger: "change",
          },
        ],
      },

      // 是否显示【上传视频】弹窗
      videoDialog: false,
      // 插入视频链接弹窗-form表单数据
      videoForm: { link: "" },
      // 插入视频链接弹窗-form表单验证规则
      videoRules: {
        link: [
          {
            validator: checkVideoUrl,
            trigger: "change",
          },
        ],
      },
      activeName: "recommend",
      tplActive: null,
      showUeditor: true,
    };
  },
  watch: {
    content: {
      handler: function (newVal) {
        this.html = newVal;
      },
      deep: true,
    },
    editorHeight: {
      handler: function (newVal) {
        this.showUeditor = false;
        setTimeout(() => {
          this.myConfig.initialFrameHeight = newVal;
          this.showUeditor = true;
        }, 100);
      },
      deep: true,
    },
    html: function (newVal) {
      this.$emit("onVal", newVal);
    },
  },
  created() {
    that = this;
    this.html = this.content;
    if (this.editorWidth) {
      this.myConfig.initialFrameWidth = this.editorWidth;
    }
    if (this.editorHeight) {
      this.myConfig.initialFrameHeight = this.editorHeight;
    }
  },

  methods: {
    ready(editorInstance) {
      this.editorInstance = editorInstance;
      editorInstance.focus([true]);
      // console.log(`编辑器实例${editorInstance.key}: `, editorInstance);
    },
    onBlur(editor, content) {
      this.$emit("onVal", this.editorInstance.getContent());
      this.$emit("onBlur", editor, content);
    },

    // 添加自定义按钮
    addCustomButtom(editorId) {
      window.UE.registerUI(
        "bjz-link",
        function (editor, uiName) {
          // 注册按钮执行时的 command 命令，使用命令默认就会带有回退操作
          editor.registerCommand(uiName, {
            execCommand: function () {
              // 打开链接插入弹窗
              that.insertLink();
            },
          });

          // 创建一个 button
          var btn = new window.UE.ui.Button({
            // 按钮的名字
            name: uiName,
            // 提示
            title: "插入链接",
            // 需要添加的额外样式，可指定 icon 图标，图标路径参考常见问题 2
            cssRules:
              "background-image: url('/test-button.png') !important;background-size: cover;",
            // 点击时执行的命令
            onclick: function () {
              // 这里可以不用执行命令，做你自己的操作也可
              editor.execCommand(uiName);
            },
          });

          // 当点到编辑内容上时，按钮要做的状态反射
          editor.addListener("selectionchange", function () {
            // queryCommandState 根据传入的command命令，查选编辑器当前的选区，返回命令的状态
            var state = editor.queryCommandState(uiName);
            if (state === -1) {
              btn.setDisabled(true);
              btn.setChecked(false);
            } else {
              btn.setDisabled(false);
              btn.setChecked(state);
            }
          });

          // 因为你是添加 button，所以需要返回这个 button
          return btn;
        },
        19 /* 指定添加到工具栏上的哪个位置，默认时追加到最后 */,
        editorId /* 指定这个 UI 是哪个编辑器实例上的，默认是页面上所有的编辑器都会添加这个按钮 */
      );

      window.UE.registerUI(
        "bjz-img",
        function (editor, uiName) {
          // 注册按钮执行时的 command 命令，使用命令默认就会带有回退操作
          editor.registerCommand(uiName, {
            execCommand: function () {
              that.editorInstance = editor;
              // that.editorInstance.focus();
              // 模拟点击上传图片按钮
              that.$refs.uploadImg.click();
            },
          });

          // 创建一个 button
          var btn = new window.UE.ui.Button({
            // 按钮的名字
            name: uiName,
            // 提示
            title: "插入图片",
            // 需要添加的额外样式，可指定 icon 图标，图标路径参考常见问题 2
            cssRules:
              "background-image: url('/notadd/images/bjz-img.png') !important;background-size: cover;",
            // 点击时执行的命令
            onclick: function () {
              // 这里可以不用执行命令，做你自己的操作也可
              editor.execCommand(uiName);
            },
          });

          // 当点到编辑内容上时，按钮要做的状态反射
          editor.addListener("selectionchange", function () {
            // queryCommandState 根据传入的command命令，查选编辑器当前的选区，返回命令的状态
            var state = editor.queryCommandState(uiName);
            if (state === -1) {
              btn.setDisabled(true);
              btn.setChecked(false);
            } else {
              btn.setDisabled(false);
              btn.setChecked(state);
            }
          });

          // 因为你是添加 button，所以需要返回这个 button
          return btn;
        },
        21 /* 指定添加到工具栏上的哪个位置，默认时追加到最后 */,
        editorId /* 指定这个 UI 是哪个编辑器实例上的，默认是页面上所有的编辑器都会添加这个按钮 */
      );
      window.UE.registerUI(
        "bjz-video",
        function (editor, uiName) {
          // 注册按钮执行时的 command 命令，使用命令默认就会带有回退操作
          editor.registerCommand(uiName, {
            execCommand: function () {
              // 打开视频插入弹窗
              that.videoDialog = true;
            },
          });

          // 创建一个 button
          var btn = new window.UE.ui.Button({
            // 按钮的名字
            name: uiName,
            // 提示
            title: "插入视频",
            // 需要添加的额外样式，可指定 icon 图标，图标路径参考常见问题 2
            cssRules:
              "background-image: url('/test-button.png') !important;background-size: cover;",
            // 点击时执行的命令
            onclick: function () {
              // 这里可以不用执行命令，做你自己的操作也可
              editor.execCommand(uiName);
            },
          });

          // 当点到编辑内容上时，按钮要做的状态反射
          editor.addListener("selectionchange", function () {
            // queryCommandState 根据传入的command命令，查选编辑器当前的选区，返回命令的状态
            var state = editor.queryCommandState(uiName);
            if (state === -1) {
              btn.setDisabled(true);
              btn.setChecked(false);
            } else {
              btn.setDisabled(false);
              btn.setChecked(state);
            }
          });

          // 因为你是添加 button，所以需要返回这个 button
          return btn;
        },
        22 /* 指定添加到工具栏上的哪个位置，默认时追加到最后 */,
        editorId /* 指定这个 UI 是哪个编辑器实例上的，默认是页面上所有的编辑器都会添加这个按钮 */
      );
    },

    // 插入链接弹窗-确认事件
    linkConfirmForm() {
      this.$refs.linkForm.validate((valid) => {
        if (valid) {
          const form = copy(this.linkForm);
          if (!form.link.match("https://") && !form.link.match("http://")) {
            form.link = "http://" + form.link;
          }
          // if (form.length) {
          //   // 编辑链接-删除之前的链接
          //   this.quillDom.deleteText(form.start, form.length);
          // }
          // 往编辑器插入当前的链接信息
          // this.quillDom.insertText(
          //   this.currQuillIndex,
          //   form.name,
          //   "link",
          //   form.link
          // );
          // this.linkCancelForm(this.currQuillIndex + form.name.length);

          // 往编辑器插入当前的链接信息
          this.editorInstance.execCommand("link", {
            href: form.link, //超链地址，必选
            textValue: form.name, //链接显示文本，可选
            title: form.name, //标题，可选
          });

          this.linkDialog = false;
        }
      });
    },
    // 插入链接弹窗-取消事件
    linkCancelForm(length) {
      this.linkDialog = false;
      this.linkForm = { name: "", link: "" };
      // 将编辑器的光标调整到插入的文字后面
      if (length) this.quillDom.setSelection(length);
    },
    // 插入\编辑 链接事件
    insertLink() {
      this.linkDialog = true;
      this.linkForm = { name: "", link: "" };
      // if (flag === "insert") {
      //   this.getQuillIndex(); // 插入-仅仅获取当前要插入的光标位置
      // } else {
      //   // 编辑链接-获取到要编辑的链接信息
      //   let Leaf = this.quillDom.getLeaf(this.currQuillIndex);
      //   if (Leaf[0].parent.domNode.nodeName !== "A") {
      //     this.currQuillIndex++;
      //     Leaf = this.quillDom.getLeaf(this.currQuillIndex);
      //   }
      //   const [leaf, offset] = Leaf;
      //   this.currQuillIndex -= offset;
      //   this.linkForm = {
      //     start: this.currQuillIndex,
      //     name: leaf.text,
      //     length: leaf.text.length,
      //     link: leaf.parent.domNode.getAttribute("href")
      //   };
      // }
      this.$nextTick(() => this.$refs.linkForm.clearValidate());
    },

    // 图片上传前操作-给qnUpData赋值
    imageBeforeUp() {
      // 插入占位图片
      // this.quillInsert("load", editorImgId);
    },
    // 图片上传成功回调
    imageUpOk(res) {
      // editorImgId: 1599126819062
      // host: "http://alioss.linshibin.com"
      // key: "temp/2020-09-03/bLN2wMcZfOZ.png"
      this.editorInstance.execCommand("insertImage", {
        //图片链接地址,必选
        src: res.key,
        // //UE内部使用参数，与src保持一致即可，可选
        // data_ue_src: res.host,
        // //图片显示宽度，可选
        // width: 300,
        // //图片显示高度，可选
        // height: 400,
        // //图片边框，可选
        // border: 2,
        // //图片左右边距，可选
        // hspace: 5,
        // //图片上下边距，可选
        // vspace: 2,
        // //图片替换文字，可选
        alt: res.editorImgId,
        // //图片标题，可选
        // title: "百度开源富文本编辑器UEditor官网"
      });
    },
    // 图片上传失败回调
    imageUpErr() {
      // const index = this.imgLoadArr.findIndex(val => {
      //   return val.editorImgId === res.editorImgId;
      // });
      // // 删除对应的占位图片
      // this.quillDom.deleteText(this.imgLoadArr[index].index, 1);
      // this.quillInsert("fail");
    },
    // 将图片插入编辑器里面
    quillInsert(flag, url, index) {
      if (flag === "load") {
        // 上传中，插入占位图片
        // 获取光标所在位置
        index = this.getQuillIndex();
        this.imgLoadIndex.push(index);
        this.imgLoadArr.push({ editorImgId: url, index });
        url = "http://alioss.linshibin.com/temp/2019-04-18/UVXfS4h0ONZ.gif";
        // 插入图片
        this.quillDom.insertEmbed(index, "image", url);
      } else if (flag === "success") {
        // 上传成功，插入上传的图片
        // 插入图片
        this.quillDom.insertEmbed(index, "image", url);
        // 将编辑器的光标调整到最后
        this.quillDom.setSelection(index + 1);
        // 编辑器插入换行符
        this.quillDom.insertText(index + 1, "\n");
      } else {
        // 上传失败，插入失败的图片
        // url =
        //     'http://alioss.linshibin.com/temp/2019-03-28/lYqt0YcqINZ.png'
        // 插入图片
        // this.quillDom.insertEmbed(index, 'image', url)
      }
    },

    // 插入视频链接-确认事件
    videoConfirmForm() {
      this.$refs.videoForm.validate((valid) => {
        if (valid) {
          const form = copy(this.videoForm);
          // if (
          //     !form.link.match('https://') &&
          //     !form.link.match('http://')
          // ) {
          //     form.link = 'http://' + form.link
          // }
          // let url = form.link.match(/src="(\S*)"/)[1];
          // 获取编辑器光标位置
          // const currIndex = this.getQuillIndex();
          // 往编辑器插入当前的视频链接信息
          // this.quillDom.insertEmbed(currIndex, "video", url);
          // this.editorInstance.execCommand(
          //   "inserthtml",
          //   `<iframe class="ql-video bjz-video" frameborder="0" allowfullscreen="true" src="${url}"></iframe>`
          // );
          if (form.link.indexOf("iframe") != -1) {
            let url = form.link.match(/src="(\S*)"/)[1];
            this.editorInstance.execCommand(
              "inserthtml",
              `<iframe class="ql-video bjz-video" frameborder="0" allowfullscreen="true" src="${url}"></iframe>`
            );
          } else {
            this.editorInstance.execCommand(
              "inserthtml",
              `<video
                    src="${form.link}"
                    width="240"
                    height="135"
                    controls="controls"
                  ></video>`
            );
          }
          // 编辑器插入换行符
          // this.quillDom.insertText(currIndex + 2, "\n");
          // // 将编辑器的光标调整到最后
          // this.quillDom.setSelection(currIndex + 2);
          this.videoCancelForm();
        }
      });
    },
    // 插入视频链接弹窗-取消事件
    videoCancelForm() {
      this.videoDialog = false;
      this.videoForm = { link: "" };
      this.$nextTick(() => this.$refs.videoForm.clearValidate());
    },
    // 添加自定义弹窗
    addCustomDialog(editorId) {
      window.UE.registerUI(
        "h1",
        function (editor, uiName) {
          // 注册按钮执行时的 command 命令，使用命令默认就会带有回退操作
          editor.registerCommand(uiName, {
            execCommand: function () {
              // editor.execCommand(
              //   "inserthtml",
              //   `<span>这是一段由自定义按钮添加的文字</span>`
              // );
              // 设置当前选区中的字体对齐方式
              // editor.execCommand("justify",align); //align可为Left，Right，Center，Justify
              // 设置当前选区的段落格式,如p,h1,h2,h3,...
              // editor.execCommand("paragraph","h1");
              // editor.execCommand("paragraph", "h1");
            },
          });

          // 创建一个 button
          var btn = new window.UE.ui.Button({
            // 按钮的名字
            name: uiName,
            // 提示
            title: "标题1",
            // 需要添加的额外样式，可指定 icon 图标，图标路径参考常见问题 2
            cssRules:
              "background-image: url('/test-button.png') !important;background-size: cover;",
            // 点击时执行的命令
            onclick: function () {
              // 这里可以不用执行命令，做你自己的操作也可
              editor.execCommand(uiName);
            },
          });

          // 当点到编辑内容上时，按钮要做的状态反射
          editor.addListener("selectionchange", function () {
            // queryCommandState 根据传入的command命令，查选编辑器当前的选区，返回命令的状态
            var state = editor.queryCommandState(uiName);
            if (state === -1) {
              btn.setDisabled(true);
              btn.setChecked(false);
            } else {
              btn.setDisabled(false);
              btn.setChecked(state);
            }
          });

          // 因为你是添加 button，所以需要返回这个 button
          return btn;
        },
        4 /* 指定添加到工具栏上的哪个位置，默认时追加到最后 */,
        editorId /* 指定这个 UI 是哪个编辑器实例上的，默认是页面上所有的编辑器都会添加这个按钮 */
      );
      window.UE.registerUI(
        "test-dialog",
        function (editor, uiName) {
          // 创建 dialog
          var dialog = new window.UE.ui.Dialog({
            // 指定弹出层中页面的路径，这里只能支持页面，路径参考常见问题 2
            iframeUrl: "/customizeDialogPage.html",
            // 需要指定当前的编辑器实例
            editor: editor,
            // 指定 dialog 的名字
            name: uiName,
            // dialog 的标题
            title: "这是一个自定义的 Dialog 浮层",
            // 指定 dialog 的外围样式
            cssRules: "width:600px;height:300px;",
            // 如果给出了 buttons 就代表 dialog 有确定和取消
            buttons: [
              {
                className: "edui-okbutton",
                label: "确定",
                onclick: function () {
                  dialog.close(true);
                },
              },
              {
                className: "edui-cancelbutton",
                label: "取消",
                onclick: function () {
                  dialog.close(false);
                },
              },
            ],
          });

          // 参考上面的自定义按钮
          var btn = new window.UE.ui.Button({
            name: "dialog-button",
            title: "鼠标悬停时的提示文字",
            cssRules: `background-image: url('/test-dialog.png') !important;background-size: cover;`,
            onclick: function () {
              // 渲染dialog
              dialog.render();
              dialog.open();
            },
          });

          return btn;
        },
        0 /* 指定添加到工具栏上的那个位置，默认时追加到最后 */,
        editorId /* 指定这个UI是哪个编辑器实例上的，默认是页面上所有的编辑器都会添加这个按钮 */
      );
    },
  },
};
</script>

<style lang="scss">
// @import "~@/styles/component-page/editor.scss";

.bjz-ueditor {
  min-height: 300px;
  & > div > div {
    overflow: hidden;
    z-index: 1;
  }
  .edui-editor-toolbarbox {
    z-index: 9999;
  }
  iframe {
    width: 100% !important;
    height: 100% !important;
    background-color: transparent !important;
  }
  .editor-relation {
    width: calc(100% - 20px);
    height: 66px;
    border: 1px solid rgba(40, 120, 255, 0.4);
    background: rgba(40, 120, 255, 0.06);
    border-radius: 4px;
    margin: 0 auto;
    margin-top: 14px;
    text-align: center;
    line-height: 20px;
    .title {
      color: #333333;
      margin-top: 10px;
    }
    .relation {
      color: #2878ff;
      margin-top: 5px;
      line-height: 20px;
      .line {
        display: inline-block;
        width: 1px;
        height: 14px;
        background-color: #999;
        position: relative;
        top: 2px;
        margin: 0 5px;
        line-height: 20px;
      }
      .text {
        line-height: 20px;
        cursor: pointer;
        color: #2878ff;
        &:hover {
          color: #2878ff;
        }
      }
    }
  }
}
.edui-notadd .edui-editor-toolbarboxouter {
  height: 69px;
  overflow: hidden;
}
// 自定义按钮
.edui-for-bjz-link {
  .edui-box.edui-icon.edui-notadd {
    background-image: url("http://oss.oact.net/Frontend/Neditor/themes/bjz-link2.png") !important;
    // background-image: url("/Neditor/themes/bjz-link2.png") !important;
    background-position: center;
    background-repeat: no-repeat;
  }
}
.edui-for-unlink {
  .edui-notadd {
    .edui-box.edui-icon.edui-notadd {
      background-image: url("http://oss.oact.net/Frontend/Neditor/themes/bjz-link1.png") !important;
      // background-image: url("/Neditor/themes/bjz-link1.png") !important;
      background-position: center;
      background-repeat: no-repeat;
      &::before {
        display: none !important;
      }
      svg {
        opacity: 0;
      }
    }
    &.edui-state-disabled {
      .edui-box.edui-icon.edui-notadd {
        background-image: url("http://oss.oact.net/Frontend/Neditor/themes/bjz-link0.png") !important;
        // background-image: url("/Neditor/themes/bjz-link0.png") !important;
      }
    }
  }
}
.edui-for-bjz-img {
  .edui-box.edui-icon.edui-notadd {
    background-image: url("http://oss.oact.net/Frontend/Neditor/themes/bjz-img2.png") !important;
    // background-image: url("/Neditor/themes/bjz-img2.png") !important;
    background-position: center;
    background-repeat: no-repeat;
  }
}
.edui-for-bjz-video {
  .edui-box.edui-icon.edui-notadd {
    background-image: url("http://oss.oact.net/Frontend/Neditor/themes/bjz-video2.png") !important;
    // background-image: url("/Neditor/themes/bjz-video2.png") !important;
    // background-size: 85% 76%;
    // background-size: 100% 100%;
    background-position: center;
    background-repeat: no-repeat;
  }
}
.bjz-video + .edui-shadow {
  display: none;
}

.edui-popup-content.edui-notadd {
  // display: none;
}

.edui-dialog .edui-for-link .edui-dialog-body,
.edui-notadd .edui-dialog,
#edui_fixedlayer {
  z-index: 9999 !important;
}
// 隐藏复制粘贴弹窗
.edui-wordpastepop {
  display: none !important;
}
</style>
